
Nombre:
Offline Explorer
Versión:
1.2
Editor:
MetaProducts
Víctima:
OE.EXE
Herramientas:
W32Dasm
GetTyp
ProcDump v1.60
Cracker:
LW2000
Tutorial:
número 44
URL:
http://www.metaproducts.com
Renuncia: Este tutorial tiene una finalidad únicamente
educativa. No asumo ninguna responsabilidad por el mal uso de éste material.
1.
Bien, vamos a intentar registrarlo. Intrducimos
‘LW2000’ como Registered User y ‘123099’ como ‘Registration Key’.
2.
¡Booom! “Sorry, registration information
is invalid.”
3.
Parece que hemos encontrado un ‘bug’.
¡Vamos a corregirlo!
4.
En primer lugar comprobamos el ‘.EXE’
con GetTyp por si estuviera empaquetado con algún ‘EXE Packer’ (siempre hago
esto en primer lugar).
5.
¡Aha! GetTyp ha localizado “ASPack v1.083”.
Bien, vamos a desempaquetarlo.
6.
Cargamos ProcDump y seleccionamos ‘UnPack’
y elegimos nuestro ‘empaquetador’.
7.
Cuando ProcDump termine cargamos el nuevo
fichero desempaquetado en W32Dasm.
8.
Hacemos click en las ‘String Data References’
y buscamos nuestra cadena:
:004B7827 8B45F4 mov eax, dword ptr [ebp-0C]
:004B782A E8C5C7F4FF call 00403FF4
:004B782F 8BC8 mov ecx, eax
* Possible StringData Ref from Code Obj->"Sorry,
registration information is invalid."
|
:004B7831 BA90784B00 mov edx, 004B7890
:004B7836 A1F84C4D00 mov eax, dword ptr [004D4CF8]
:004B783B 8B00 mov eax, dword ptr [eax]
:004B783D E81A7EF9FF call 0044F65C
9.
Bien, estupendo. Pero si nos desplazamos
un poco más arriba veremos desde donde hemos llegado:
* Referenced by a (U)nconditional or (C)onditional
Jump at Address:
|:004B771B(C) >Vamos
aquí.
|
:004B7782 6A10 push 00000010
:004B7784 8D4DF0 lea ecx, dword ptr [ebp-10]
:004B7787 A1FC4A4D00 mov eax, dword ptr [004D4AFC]
:004B778C 8B00 mov eax, dword ptr [eax]
10.
Ahora vamos a la posición ‘004B771B’:
:004B7714 E8F7B00000 call 004C2810 >Rutina de comprobación
:004B7719 84C0 test al, al >Comprueba
AL
:004B771B 7565 jne 004B7782 >Comprobación
:004B771D A1FC4A4D00 mov eax, dword ptr [004D4AFC]
:004B7722 8B00 mov eax, dword ptr [eax]
:004B7724 C680C005000001 mov byte ptr [eax+000005C0], 01
11.
Así que, ¿qué podemos hacer ahora? ¿Cambiamos el ‘JNE’ a ‘JE’? ¡¡¡NO!!!
Esto es bastante tonto ya que la mayoría de los programa comprueban el Serial
en más de una ocasión.
12.
Así que si ‘AL = 1’ entonces se pasa la comprobación, en caso contrario.
Falla. Vamos a ir dentro del ‘CALL’ y anotamos el offset (‘C1C10’). Abrimos
el fichero desempaquetado con HIEW y vamos a nuestro offset:
:004C2810 55 push ebp
:004C2811 8BEC mov ebp, esp
:004C2813 83C4F0 add esp, FFFFFFF0
:004C2816 53 push ebx
:004C2817 33DB xor ebx, ebx
:004C2819 895DF0 mov dword ptr [ebp-10], ebx
13.
Pulsamos F3 para editar y F2 para introducir comando en ensamblador.
Introducimos:
mov al, 1 [Intro]
ret [Intro]
[Esc]
14.
Guardamos nuestro trabajo y salimos. Ahora intentamos registrarlo
de nuevo.
¡Enhorabuena! ¡Ya es usted un usuario registrado!
¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme
un email a LW2000@gmx.net.
o vaya a http://www.LW2000.cjb.net
Gracias a tKC por sus tutoriales. Empecé leyendo su
primer tutorial y todavía sigo leyéndolos.
Traducción de: MeGaBiTe